home *** CD-ROM | disk | FTP | other *** search
-
- #include <Retrace.h>
-
- void HackInit(void);
-
- typedef struct myVBLRecord_t
- {
- VBLTask myVBLTask;
- long count;
- } myVBLRecord;
-
-
- void main(void)
- {
- EventRecord rec;
- HackInit();
- while (1)
- WaitNextEvent(everyEvent, &rec, 0xffffffff, 0);
- }
-
- #pragma parameter __A0 getA0()
- extern pascal long getA0()
- ONEWORDINLINE(0x4e71);
-
- void myVBL();
- void myVBL()
- {
- myVBLRecord *rec = (myVBLRecord *)getA0();
- if (++rec->count == 6)
- {
- unsigned long theTime;
- OSErr err;
- GetDateTime(&theTime);
- err = SetDateTime(theTime+1);
- if (err)
- DebugStr("\pcould not get time");
- rec->count = 0;
- }
- LMSetTicks(LMGetTicks()+9);
- rec->myVBLTask.vblCount = 1;
- }
-
- struct jmpPtr
- {
- unsigned short jmp;
- VBLUPP toWhere;
- };
-
- void HackInit(void)
- {
- myVBLRecord *rec = (myVBLRecord *)NewPtrSys(sizeof(myVBLRecord));
- struct jmpPtr *jmper = (struct jmpPtr*)NewPtrSys(sizeof(6));
- OSErr myErr;
- if (rec && jmper)
- {
- jmper->jmp = 0x4ef9;
- jmper->toWhere = (VBLUPP)myVBL;
- rec->count = 0;
- rec->myVBLTask.qType = vType;
- rec->myVBLTask.vblAddr = (VBLUPP)jmper;
- rec->myVBLTask.vblCount = 1;
- myErr = VInstall((QElemPtr)rec);
- if (myErr)
- DebugStr("\pcould not install vbl task");
- }
- }